<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>Proxy</h1>
</body>
<script>
    const data = {
        name: 'jack',
        age: 10,
        sex: '男'
    }
    // 使用Proxy对象data对象进行代理
    const p = new Proxy(data, {
        // target: 系统参数, 表示用户访问的对象
        // key: 系统参数, 表示用户访问的属性名
        get(target, key) {
            console.log(target, key);
            // 通过发布者订阅者模式, 收集数据和视图的对应关系
            // 一般需要返回值
            return target[key];
        },
        // target: 系统参数, 表示用户访问的对象
        // key: 系统参数, 表示用户访问的属性名
        // value: 系统参数, 表示用户提供的最新赋值
        set(target, key, value) {
            // 通知视图更新: 通知引用了该数据的视图更新
            console.log(target, key, value);
            target[key]=value;
        }
    });

    // console.log(p.name);
    p.name='rose';
    console.log(data.name);
</script>

</html>